import { Request, Response } from 'express';
import { UserService } from '../services/userService';

// 创建用户
export function createUser (req: Request, res: Response): void {
  try {
    const { username, email, password, role } = req.body;
    if (!username || !email || !password) {
      res.status(400).json({
        success: false,
        error: '用户名、邮箱和密码为必填项'
      });
      return;
    }
    UserService.createUser({
      username,
      email,
      password,
      role: role || 'user'
    }).then(result => {
      if (result.success) {
        res.status(201).json(result);
      } else {
        res.status(400).json(result);
      }
    }).catch(error => {
      res.status(500).json({
        success: false,
        error: error.message
      });
    });
  } catch (error: any) {
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
}

// 获取所有用户
export function getAllUsers(req: Request, res: Response): void {
  try {
    UserService.getAllUsers().then(result => {
      if (result.success) {
        res.status(200).json(result);
      } else {
        res.status(500).json(result);
      }
    }).catch(error => {
      res.status(500).json({
        success: false,
        error: error.message
      });
    });
  } catch (error: any) {
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
}

// 根据ID获取用户
export function getUserById(req: Request, res: Response): void {
  try {
    const id = parseInt(req.params.id);
    if (isNaN(id)) {
      res.status(400).json({
        success: false,
        error: '无效的用户ID'
      });
      return;
    }
    UserService.getUserById(id).then(result => {
      if (result.success) {
        res.status(200).json(result);
      } else {
        res.status(404).json(result);
      }
    }).catch(error => {
      res.status(500).json({
        success: false,
        error: error.message
      });
    });
  } catch (error: any) {
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
}

// 更新用户
export function updateUser(req: Request, res: Response): void {
  try {
    const id = parseInt(req.params.id);
    if (isNaN(id)) {
      res.status(400).json({
        success: false,
        error: '无效的用户ID'
      });
      return;
    }
    UserService.updateUser(id, req.body).then(result => {
      if (result.success) {
        res.status(200).json(result);
      } else {
        res.status(404).json(result);
      }
    }).catch(error => {
      res.status(500).json({
        success: false,
        error: error.message
      });
    });
  } catch (error: any) {
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
}

// 删除用户
export function deleteUser(req: Request, res: Response): void {
  try {
    const id = parseInt(req.params.id);
    if (isNaN(id)) {
      res.status(400).json({
        success: false,
        error: '无效的用户ID'
      });
      return;
    }
    UserService.deleteUser(id).then(result => {
      if (result.success) {
        res.status(200).json(result);
      } else {
        res.status(404).json(result);
      }
    }).catch(error => {
      res.status(500).json({
        success: false,
        error: error.message
      });
    });
  } catch (error: any) {
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
} 